package com.bbzn.device.client.dataobject;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

@Getter
@Setter
@ToString
public class Device implements Serializable {
    /**
     * 主键id
     */
    private Long id;

    /**
     * 租户id
     */
    private Long tenantId;

    /**
     * 用户id
     */
    private Long userId;

    /**
     * 设备类目id
     */
    private Long deviceCategoryId;

    /**
     * 客户端 ID
     */
    private String clientId;

    /**
     * is_online --状态 ( 0 离线 1 在线 2 未激活）
     */
    private Integer state;

    /**
     * online_at --上线时间
     */
    private Date connectedAt;

    /**
     * 离线时间
     */
    private Date offlineAt;

    /**
     * 最后通讯时间
     */
    private Date lastConnectTime;

    /**
     * nb平台注册id
     */
    private String nbDeviceId;

    /**
     * 设备IMEI号,固定15位
     */
    private String imei;

    /**
     * 物联网卡号
     */
    private String iccid;

    /**
     * 设备IMSI
     */
    private String imsi;

    /**
     * 使用状态：0为待入库 /1：已入库 / 2：已分配 / 3:出库未绑定 / 4. 出库已绑定 / 5.出库已解绑 6 已回收
     */
    private Integer used;

    /**
     * 设备名字
     */
    private String name;

    /**
     * 公司名
     */
    private String company;

    /**
     * 运营商
     */
    private String operator;

    /**
     * 设备sku
     */
    private String sku;

    /**
     * 备注
     */
    private String remark;

    /**
     * 出厂时设备固定版本(固定不能升级)
     */
    private String sysVersion;

    /**
     * 应用版本（可以在线升级，可变）
     */
    private String appVersion;

    /**
     * 步数
     */
    private Long step;

    /**
     * 心率
     */
    private Double rate;

    /**
     * 血压高压 [收缩压]
     */
    private Integer systolic;

    /**
     * 血压低压 [舒张压]
     */
    private Integer diastolic;

    /**
     * 血氧
     */
    private Double bloodOxygen;

    /**
     * 电池电量信息百分比
     */
    private Integer battery;

    /**
     * 睡眠时长
     */
    private Double sleepTime;

    /**
     * 体温
     */
    private Double temperate;

    /**
     * 当前坐标位置
     */
    private String location;

    /**
     * 室内地图
     */
    private String indoorImg;

    /**
     * 经度
     */
    private String lon;

    /**
     * 纬度
     */
    private String lat;

    /**
     * 心率上限
     */
    private Double heartUpper;

    /**
     * 心率下限
     */
    private Double heartLower;

    /**
     * 心率设置状态【0：修改成功 / 1：修改中】
     */
    private Integer rateState;

    /**
     * 体温上限
     */
    private Double tempUpper;

    /**
     * 体温下限
     */
    private Double tempLower;

    /**
     * 体温设置状态【0：修改成功 / 1：修改中】
     */
    private Integer tempState;

    /**
     * 血氧设置状态【0：修改成功 / 1：修改中】
     */
    private Integer oxyState;

    /**
     * 血氧上限
     */
    private Double oxyUpper;

    /**
     * 血氧下限
     */
    private Double oxyLower;

    /**
     * 收缩压范围值【拼接，使用"."分隔】
     */
    private Double sbp;

    /**
     * 舒张压范围值【拼接，使用"."分隔】
     */
    private Double dbp;

    /**
     * 血压设置状态【0：修改成功 / 1：修改中】
     */
    private Integer pressureState;

    /**
     * 心率测量时间间隔【分钟】
     */
    private Integer rateInterval;

    /**
     * 体温测量时间间隔【分钟】
     */
    private Integer tempInterval;

    /**
     * 血压测量时间间隔【分钟】
     */
    private Integer pressureInterval;

    /**
     * 血氧测量时间间隔【分钟】
     */
    private Integer oxyInterval;

    /**
     * 定位数据上报时间间隔【分钟】
     */
    private Integer locationInterval;

    /**
     * 定位间隔设置状态【0：修改成功 / 1：修改中】
     */
    private Integer locationState;

    /**
     * 设备重启时间【分钟】
     */
    private Integer reloadInterval;

    /**
     * 设备重启间隔设置状态【0：修改成功 / 1：修改中】
     */
    private Integer reloadState;

    /**
     * wifi信号强度
     */
    private Integer wifi;

    /**
     * gds个数
     */
    private Integer gps;

    /**
     * 4G信号强度
     */
    private Integer fg;

    /**
     * 蓝牙强度
     */
    private Integer bluetooth;

    /**
     * 近电设置
     */
    private Integer voltage;

    /**
     * 近电设置状态【0：修改成功 / 1：修改中】
     */
    private Integer voltageState;

    /**
     * 有害气体间隔时间【分钟】
     */
    private Integer harmfulGasInterval;

    /**
     * 有害气体间隔时间【秒】
     */
    private Integer harmfulGasDetectTime;

    /**
     * 有害气体设置状态
     */
    private Integer harmfulGasState;

    /**
     * 有害气体检测状态 0:气体正常 1:发生报警
     */
    private Integer harmfulGasDetectStatus;

    /**
     * 环境温度
     */
    private Double temperature;

    /**
     * 环境温度上限
     */
    private Double temperatureUpper;

    /**
     * 环境间隔时间
     */
    private Integer temperatureInterval;

    /**
     * 环境温度下限
     */
    private Double temperatureLower;

    /**
     * 室外温度间隔设置状态【0：修改成功 / 1：修改中】
     */
    private Integer temperatureState;

    /**
     * 海拔 米/单位
     */
    private Integer elevation;

    /**
     * 海拔设置状态【0：修改成功 / 1：修改中】
     */
    private Integer elevationState;

    /**
     * 湿度
     */
    private String humidity;

    /**
     * 空气质量
     */
    private String aqi;

    /**
     * 认证状态 【-1 认证失败 0 未认证 1 审核中 2 认证完成】
     */
    private Integer authState;

    /**
     * 定位类型【1:GPS / 2:wifi】
     */
    private Integer positionType;

    /**
     * 海拔上限
     */
    private Integer elevationUpper;

    /**
     * 海拔间隔
     */
    private Integer elevationInterval;

    /**
     * 海拔下限
     */
    private Integer elevationLower;

    /**
     * 卡槽类型 【0：卡槽1（插拔卡）/ 1：卡槽2（贴片卡）】
     */
    private Integer slotType;

    /**
     * 卡槽设置状态 【0：修改成功/ 1：修改中】
     */
    private Integer slotState;

    /**
     * 欢迎语
     */
    private String greeting;

    /**
     * 欢迎语设置状态【0：修改成功/ 1：修改中】
     */
    private Integer greetingState;

    /**
     * 总使用流量
     */
    private String cardFlow;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")//页面写入数据库时格式化
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 更新时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")//页面写入数据库时格式化
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    /**
     * 创建人
     */
    private String createdBy;

    /**
     * 修改人
     */
    private String updatedBy;

    /**
     * 产品ID
     */
    private Long productId;

    /**
     * 激活时间
     */
    private Date activeTime;

    /**
     * 电压
     */
    private Integer voltageStatus;

    /**
     * 电流
     */
    private Integer electric;

    /**
     * 发电: 0正常 1故障
     */
    private Integer generators;

    /**
     * 市电: 0 正常 1 异常
     */
    private Integer municipalElectric;

    /**
     * 喷淋水泵: 0 正常 1 工作中 2 异常
     */
    private Integer sprayingPump;

    /**
     * 消防栓泵: 0 正常 1 工作中 2 异常
     */
    private Integer firePumps;

    /**
     * 高位水箱水位: 0 正常 1 异常
     */
    private Integer heightTank;

    /**
     * 水池水位： 0 正常 1 异常
     */
    private Integer poolTank;

    /**
     * 压力:帕
     */
    private Integer pipelinePressure;

    /**
     * 用来判断设备是否存在的
     */
    private Integer addStatus;

    private static final long serialVersionUID = 1L;
}